home *** CD-ROM | disk | FTP | other *** search
Makefile | 1997-08-15 | 10.2 KB | 378 lines | [TEXT/ALFA] |
- # Visual C++ 2.x and 4.0 makefile
- #
- # See the file "license.terms" for information on usage and redistribution
- # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- #
- # Copyright (c) 1995-1996 Sun Microsystems, Inc.
- # SCCS: @(#) makefile.vc 1.80 97/08/13 13:30:36
-
- # Does not depend on the presence of any environment variables in
- # order to compile tcl; all needed information is derived from
- # location of the compiler directories.
-
- #
- # Project directories
- #
- # ROOT = top of source tree
- #
- # TMPDIR = location where .obj files should be stored during build
- #
- # TOOLS32 = location of VC++ 32-bit development tools. Note that the
- # VC++ 2.0 header files are broken, so you need to use the
- # ones that come with the developer network CD's, or later
- # versions of VC++.
- #
- # TOOLS16 = location of VC++ 1.5 16-bit tools, needed to build thunking
- # library. This information is optional; if the 16-bit compiler
- # is not available, then the 16-bit code will not be built.
- # Tcl will still run without the 16-bit code, but...
- # A. Under Windows 3.X you will any calls to the exec command
- # will return an error.
- # B. A 16-bit program to test the behavior of the exec
- # command under NT and 95 will not be built.
- #
-
- ROOT = ..
- TMPDIR = .
- TOOLS32 = c:\msdev
- TOOLS16 = c:\msvc
-
- # Set this to the appropriate value of /MACHINE: for your platform
- MACHINE = IX86
-
- # Comment the following line to compile with symbols
- NODEBUG=1
-
- # uncomment one of the following lines to compile with TCL_MEM_DEBUG,
- # TCL_MEM_DEBUG, or TCL_COMPILE_DEBUG
- #DEBUGDEFINES = -DTCL_MEM_DEBUG
- #DEBUGDEFINES = -DTCL_MEM_DEBUG -DTCL_COMPILE_DEBUG
- #DEBUGDEFINES = -DTCL_MEM_DEBUG -DTCL_COMPILE_STATS
- #DEBUGDEFINES = -DTCL_MEM_DEBUG -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
-
- ######################################################################
- # Do not modify below this line
- ######################################################################
-
- VERSION = 80
-
- TCLLIB = tcl$(VERSION).lib
- TCLDLL = tcl$(VERSION).dll
- TCLPLUGINLIB = tcl$(VERSION)p.lib
- TCLPLUGINDLL = tcl$(VERSION)p.dll
- TCL16DLL = tcl16$(VERSION).dll
- TCLSH = tclsh$(VERSION).exe
- TCLSHP = tclshp$(VERSION).exe
- TCLTEST = tcltest.exe
- DUMPEXTS = $(TMPDIR)\dumpexts.exe
- TCLPIPEDLL = tclpip$(VERSION).dll
- TCLREGDLL = tclreg$(VERSION).dll
- CAT16 = cat16.exe
- CAT32 = cat32.exe
-
- TCLSHOBJS = \
- $(TMPDIR)\tclAppInit.obj
-
- TCLTESTOBJS = \
- $(TMPDIR)\tclTest.obj \
- $(TMPDIR)\tclTestObj.obj \
- $(TMPDIR)\tclWinTest.obj \
- $(TMPDIR)\testMain.obj
-
- TCLOBJS = \
- $(TMPDIR)\panic.obj \
- $(TMPDIR)\regexp.obj \
- $(TMPDIR)\strftime.obj \
- $(TMPDIR)\tclAlloc.obj \
- $(TMPDIR)\tclAsync.obj \
- $(TMPDIR)\tclBasic.obj \
- $(TMPDIR)\tclBinary.obj \
- $(TMPDIR)\tclCkalloc.obj \
- $(TMPDIR)\tclClock.obj \
- $(TMPDIR)\tclCmdAH.obj \
- $(TMPDIR)\tclCmdIL.obj \
- $(TMPDIR)\tclCmdMZ.obj \
- $(TMPDIR)\tclCompExpr.obj \
- $(TMPDIR)\tclCompile.obj \
- $(TMPDIR)\tclDate.obj \
- $(TMPDIR)\tclEnv.obj \
- $(TMPDIR)\tclEvent.obj \
- $(TMPDIR)\tclExecute.obj \
- $(TMPDIR)\tclFCmd.obj \
- $(TMPDIR)\tclFileName.obj \
- $(TMPDIR)\tclGet.obj \
- $(TMPDIR)\tclHash.obj \
- $(TMPDIR)\tclHistory.obj \
- $(TMPDIR)\tclIndexObj.obj \
- $(TMPDIR)\tclInterp.obj \
- $(TMPDIR)\tclIO.obj \
- $(TMPDIR)\tclIOCmd.obj \
- $(TMPDIR)\tclIOSock.obj \
- $(TMPDIR)\tclIOUtil.obj \
- $(TMPDIR)\tclLink.obj \
- $(TMPDIR)\tclListObj.obj \
- $(TMPDIR)\tclLoad.obj \
- $(TMPDIR)\tclMain.obj \
- $(TMPDIR)\tclNamesp.obj \
- $(TMPDIR)\tclNotify.obj \
- $(TMPDIR)\tclObj.obj \
- $(TMPDIR)\tclParse.obj \
- $(TMPDIR)\tclPipe.obj \
- $(TMPDIR)\tclPkg.obj \
- $(TMPDIR)\tclPosixStr.obj \
- $(TMPDIR)\tclPreserve.obj \
- $(TMPDIR)\tclProc.obj \
- $(TMPDIR)\tclStringObj.obj \
- $(TMPDIR)\tclTimer.obj \
- $(TMPDIR)\tclUtil.obj \
- $(TMPDIR)\tclVar.obj \
- $(TMPDIR)\tclWin32Dll.obj \
- $(TMPDIR)\tclWinChan.obj \
- $(TMPDIR)\tclWinError.obj \
- $(TMPDIR)\tclWinFCmd.obj \
- $(TMPDIR)\tclWinFile.obj \
- $(TMPDIR)\tclWinInit.obj \
- $(TMPDIR)\tclWinLoad.obj \
- $(TMPDIR)\tclWinMtherr.obj \
- $(TMPDIR)\tclWinNotify.obj \
- $(TMPDIR)\tclWinPipe.obj \
- $(TMPDIR)\tclWinSock.obj \
- $(TMPDIR)\tclWinTime.obj
-
- cc32 = $(TOOLS32)\bin\cl.exe
- link32 = $(TOOLS32)\bin\link.exe
- rc32 = $(TOOLS32)\bin\rc.exe
- include32 = -I$(TOOLS32)\include
-
- cc16 = $(TOOLS16)\bin\cl.exe
- link16 = $(TOOLS16)\bin\link.exe
- rc16 = $(TOOLS16)\bin\rc.exe
- include16 = -I$(TOOLS16)\include
-
- WINDIR = $(ROOT)\win
- GENERICDIR = $(ROOT)\generic
-
- TCL_INCLUDES = -I$(WINDIR) -I$(GENERICDIR)
- TCL_DEFINES = -D__WIN32__ $(DEBUGDEFINES)
-
- TCL_CFLAGS = $(cdebug) $(cflags) $(cvarsdll) $(include32) \
- $(TCL_INCLUDES) $(TCL_DEFINES)
- CON_CFLAGS = $(cdebug) $(cflags) $(cvars) $(include32) -DCONSOLE
- DOS_CFLAGS = $(cdebug) $(cflags) $(include16) -AL
- DLL16_CFLAGS = $(cdebug) $(cflags) $(include16) -ALw
-
- ######################################################################
- # Link flags
- ######################################################################
-
- !IFDEF NODEBUG
- ldebug = /RELEASE
- !ELSE
- ldebug = -debug:full -debugtype:cv
- !ENDIF
-
- # declarations common to all linker options
- lcommon = /NODEFAULTLIB /RELEASE /NOLOGO
-
- # declarations for use on Intel i386, i486, and Pentium systems
- !IF "$(MACHINE)" == "IX86"
- DLLENTRY = @12
- lflags = $(lcommon) -align:0x1000 /MACHINE:$(MACHINE)
- !ELSE
- lflags = $(lcommon) /MACHINE:$(MACHINE)
- !ENDIF
-
- conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup
- guilflags = $(lflags) -subsystem:windows -entry:WinMainCRTStartup
- dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
-
- !IF "$(MACHINE)" == "PPC"
- libc = libc.lib
- libcdll = crtdll.lib
- !ELSE
- libc = libc.lib oldnames.lib
- libcdll = msvcrt.lib oldnames.lib
- !ENDIF
-
- baselibs = kernel32.lib $(optlibs) advapi32.lib user32.lib
- winlibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib
-
- guilibs = $(libc) $(winlibs)
- conlibs = $(libc) $(baselibs)
- guilibsdll = $(libcdll) $(winlibs)
- conlibsdll = $(libcdll) $(baselibs)
-
- ######################################################################
- # Compile flags
- ######################################################################
-
- !IFDEF NODEBUG
- cdebug = -Ox
- !ELSE
- cdebug = -Z7 -Od -WX
- !ENDIF
-
- # declarations common to all compiler options
- ccommon = -c -W3 -nologo -YX -Dtry=__try -Dexcept=__except
-
- !IF "$(MACHINE)" == "IX86"
- cflags = $(ccommon) -D_X86_=1
- !ELSE
- !IF "$(MACHINE)" == "MIPS"
- cflags = $(ccommon) -D_MIPS_=1
- !ELSE
- !IF "$(MACHINE)" == "PPC"
- cflags = $(ccommon) -D_PPC_=1
- !ELSE
- !IF "$(MACHINE)" == "ALPHA"
- cflags = $(ccommon) -D_ALPHA_=1
- !ENDIF
- !ENDIF
- !ENDIF
- !ENDIF
-
- cvars = -DWIN32 -D_WIN32
- cvarsmt = $(cvars) -D_MT
- cvarsdll = $(cvarsmt) -D_DLL
-
- ######################################################################
- # Project specific targets
- ######################################################################
-
- release: $(TCLSH) dlls
- dlls: $(TCL16DLL) $(TCLPIPEDLL) $(TCLREGDLL)
- all: $(TCLSH) dlls $(CAT16) $(CAT32)
- tcltest: $(TCLTEST) dlls $(CAT16) $(CAT32)
- plugin: $(TCLPLUGINDLL) $(TCLSHP)
- test: $(TCLTEST) dlls $(CAT16) $(CAT32)
- $(TCLTEST) <<
- cd ../tests
- source all
- <<
-
- $(DUMPEXTS): $(WINDIR)\winDumpExts.c
- $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $?
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(conlflags) $(guilibs) -out:$@ \
- $(TMPDIR)\winDumpExts.obj
-
- $(TCLLIB): $(TCLDLL)
-
- $(TCLDLL): $(TCLOBJS) $(TMPDIR)\tcl.def $(TMPDIR)\tcl.res
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(dlllflags) -def:$(TMPDIR)\tcl.def \
- -out:$@ $(TMPDIR)\tcl.res $(guilibsdll) @<<
- $(TCLOBJS)
- <<
-
- $(TCLPLUGINLIB): $(TCLPLUGINDLL)
-
- $(TCLPLUGINDLL): $(TCLOBJS) $(TMPDIR)\plugin.def $(TMPDIR)\tcl.res
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(dlllflags) -def:$(TMPDIR)\plugin.def \
- -out:$@ $(TMPDIR)\tcl.res $(guilibsdll) @<<
- $(TCLOBJS)
- <<
-
- $(TCLSH): $(TCLSHOBJS) $(TCLLIB) $(TMPDIR)\tclsh.res
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res \
- -out:$@ $(conlibsdll) $(TCLLIB) $(TCLSHOBJS)
-
- $(TCLSHP): $(TCLSHOBJS) $(TCLPLUGINLIB) $(TMPDIR)\tclsh.res
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res \
- -out:$@ $(conlibsdll) $(TCLPLUGINLIB) $(TCLSHOBJS)
-
- $(TCLTEST): $(TCLTESTOBJS) $(TCLLIB) $(TMPDIR)\tclsh.res
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res -stack:1572864 \
- -out:$@ $(conlibsdll) $(TCLLIB) $(TCLTESTOBJS)
-
- $(TCL16DLL): $(WINDIR)\tcl16.rc $(WINDIR)\tclWin16.c
- if exist $(cc16) $(cc16) @<<
- $(DLL16_CFLAGS) -Fo$(TMPDIR)\ $(WINDIR)\tclWin16.c
- <<
- @copy << $(TMPDIR)\tclWin16.def > nul
- LIBRARY $(@B);dll
- EXETYPE WINDOWS
- CODE PRELOAD MOVEABLE DISCARDABLE
- DATA PRELOAD MOVEABLE SINGLE
- HEAPSIZE 1024
- EXPORTS
- WEP @1 RESIDENTNAME
- UTPROC @2
- <<
- if exist $(cc16) $(link16) /NOLOGO /ONERROR:NOEXE /NOE @<<
- $(TMPDIR)\tclWin16.obj
- $@
- nul
- $(TOOLS16)\lib\ ldllcew oldnames libw toolhelp
- $(TMPDIR)\tclWin16.def
- <<
- if exist $(cc16) $(rc16) -i $(GENERICDIR) $(TCL_DEFINES) $(WINDIR)\tcl16.rc $@
-
- $(TCLPIPEDLL): $(WINDIR)\stub16.c
- $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $(WINDIR)\stub16.c
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(conlflags) -out:$@ $(TMPDIR)\stub16.obj $(guilibs)
-
- $(TCLREGDLL): $(TMPDIR)\tclWinReg.obj
- set LIB=$(TOOLS32)\lib
- $(link32) $(ldebug) $(dlllflags) -out:$@ $(TMPDIR)\tclWinReg.obj \
- $(conlibsdll) $(TCLLIB)
-
- $(CAT32): $(WINDIR)\cat.c
- $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $?
- set LIB=$(TOOLS32)\lib
- $(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs)
-
- $(CAT16): $(WINDIR)\cat.c
- if exist $(cc16) $(cc16) $(DOS_CFLAGS) -Fo$(TMPDIR)\ $?
- set LIB=$(TOOLS16)\lib
- if exist $(cc16) $(link16) /NOLOGO /ONERROR:NOEXE /NOI /STACK:16384 \
- $(TMPDIR)\cat.obj,$@,nul,llibce.lib,nul
-
- $(TMPDIR)\tcl.def: $(DUMPEXTS) $(TCLOBJS)
- $(DUMPEXTS) -o $@ $(TCLDLL) @<<
- $(TCLOBJS)
- <<
-
- $(TMPDIR)\plugin.def: $(DUMPEXTS) $(TCLOBJS)
- $(DUMPEXTS) -o $@ $(TCLPLUGINDLL) @<<
- $(TCLOBJS)
- <<
-
- #
- # Special case object file targets
- #
-
- $(TMPDIR)\testMain.obj: $(WINDIR)\tclAppInit.c
- $(cc32) $(TCL_CFLAGS) -DTCL_TEST -Fo$(TMPDIR)\testMain.obj $?
-
- #
- # Implicit rules
- #
-
- {$(WINDIR)}.c{$(TMPDIR)}.obj:
- $(cc32) $(TCL_CFLAGS) -Fo$(TMPDIR)\ $<
-
- {$(GENERICDIR)}.c{$(TMPDIR)}.obj:
- $(cc32) $(TCL_CFLAGS) -Fo$(TMPDIR)\ $<
-
- {$(ROOT)\compat}.c{$(TMPDIR)}.obj:
- $(cc32) $(TCL_CFLAGS) -Fo$(TMPDIR)\ $<
-
- {$(WINDIR)}.rc{$(TMPDIR)}.res:
- $(rc32) -fo $@ -r -i $(GENERICDIR) -i $(WINDIR) -D__WIN32__ \
- $(TCL_DEFINES) $<
-
- clean:
- -@del *.exp
- -@del *.lib
- -@del *.dll
- -@del *.exe
- -@del $(TMPDIR)\*.obj
- -@del $(TMPDIR)\*.res
- -@del $(TMPDIR)\*.def
-